package org.example.manager;

import org.example.enums.ShortLinkStateEnum;
import org.example.model.GroupCodeMappingDO;

import java.util.Map;

/**
 * @description:
 * @author: 谢超
 * @date: 2023/8/21 19:51
 */
public interface GroupCodeMappingManager {

    /**
     * 查找详情
     * @param mappingId
     * @param accountNo
     * @param groupId
     * @return
     */
    GroupCodeMappingDO findByGroupIdAndMappingId(Long mappingId, Long accountNo, Long groupId);

    /**
     * 新增
     * @param groupCodeMappingDO
     * @return
     */
    int addGroupMapping(GroupCodeMappingDO groupCodeMappingDO);

    /**
     * 删除(逻辑删除del 0改为1 表示删除)
     * @param groupCodeMappingDO
     * @return
     */
    int delGroupMapping(GroupCodeMappingDO groupCodeMappingDO);

    /**
     * 分页查找
     * @param page
     * @param size
     * @param accountNo
     * @param groupId
     * @return
     */
    Map<String,Object> pageShortLinkByGroupId(Integer page, Integer size, Long accountNo, Long groupId);

    /**
     * 更新短链码的状态（是否可用）
     * @param accountNo
     * @param groupId
     * @param shortLinkCode
     * @param shortLinkStateEnum
     * @return
     */
    int updateGroupCodeMappingState (Long accountNo, Long groupId, String shortLinkCode, ShortLinkStateEnum shortLinkStateEnum);

    /**
     * 查找是否存在
     * @param shortLinkCode
     * @param groupId
     * @param accountNo
     * @return
     */
    GroupCodeMappingDO findByCodeAndGroupId(String shortLinkCode, Long groupId, Long accountNo);

    /**
     * 更新短链
     * @param groupCodeMappingDO
     * @return
     */
    int update(GroupCodeMappingDO groupCodeMappingDO);
}

